今天的過程分析中,我們均使用kali來作範例。
首先先用ip addr
確認我們每個網路介面卡的IPv4和MAC
而我們在使用ping指令時可以看到每次都會一對ICMP Echo Request/ICMP Echo Reply,因此我們可以知道每次ping時都一定會有以下封包
ICMP Echo Request:首先,電腦會建立一個ICMP封包,這個封包被稱為"Echo Request"。這個封包包含了一些基本資訊,例如我的IP地址和一個序列號
在Frame的地方這一層包含了封包的物理層細節,如封包的長度和捕獲時間。
可看到在Ethernet II的地方有寫著我的eth0的來源MAC位址,並且目標MAC位址為08:00:27:01:64:72
,而類型為IPv4
並且可在Internet Protocol Version 4看到IPv4的資訊,來源IPv4位址為10.73.29.4同樣為我eth0的位址目標IPv4位址為203.66.35.65。
ICMP Echo Reply:當封包到達目的地後,目標主機會回應一個"Echo Reply"的ICMP封包。這個封包包含了相同的序列號,所以你的電腦可以知道這個回應是對應到哪一個請求的。
可看到資訊基本上類似就是來源和目標的IP和MAC反過來了。
而在ICMP Echo Request/ICMP Echo Reply封包中為甚麼會知道目標IP呢?以kali為例,我們進行以下分析:
首先我們先擷取發送一次ping會產生的所有封包即可,方便我們來做分析,可使用指令ping -c 1 www.hinet.net
接著到wireshark可以擷取到以下8個封包
可以看到他經過了以下步驟:
www.hinet.net
的IPv4地址(A紀錄)。www.hinet.net
的IPv6地址(AAAA紀錄)。www.hinet.net
的IPv4地址。這個網域名稱實際上是一個CNAME紀錄,指向 hinet-hp.cdn.hinet.net
,並提供了該名稱的多個IPv4地址。www.hinet.net
的IPv6地址。同樣,這個網域名稱是一個CNAME紀錄,指向 hinet-hp.cdn.hinet.net,並提供了該名稱的多個IPv6地址。www.hinet.net
的一個IPv4地址(203.66.35.97)發送了一個ICMP Echo請求,也就是一個ping請求。www.hinet.net
的伺服器回應了你的ping請求,回傳了一個ICMP Echo回應。這就是為甚麼我們會知道www.hinet.net
的IP位址並向它傳送ICMP Echo Request/ICMP Echo Reply封包,而我們現在將指令改為ping -c 2 www.hinet.net
並用wireshark來擷取兩次ping封包。
可看到擷取到的封包變為
在這裡會發現會去向DNS去做IPv4和IPv6查詢的只有在第1次ping的時候,之後的ping由於我們已經知道了目標的IPv4、IPv6等資訊,所以可以直接傳送ICMP Echo Request/ICMP Echo Reply封包。
以上就是本次鐵人賽30天做的各種網路實驗內容。